home *** CD-ROM | disk | FTP | other *** search
/ Acorn RISC PD-CD 1 / Acorn RISC PD-CD 1.iso / fractals / _tripatron / scroll3 < prev   
Text File  |  1992-01-03  |  8KB  |  58 lines

  1. 
  2. ô>SCROLL3ë13( max=1002+Þexit(max),exitbottom(max),exittop(max)<!Þexitright(max),exitleft(max)AÞexit2(max),exit3(max)PT%=&30000:code=&70000ZWSC=0:oldX=1:Y=2:XST=3:temp=4:SCEND=5:R=10:I=6:A=7:B=8:X=9:pixcnt=11:count=12:SC2=12d table=12nãP=0 ¸ 2 ⇦2:P%=code:[OPT Px.initialiseŵMOV R2,#T%……MOV R0,#0:.L:MOV R3,R0,ASR#16:MUL R1,R3,R3:TST R1,#&E0000000:MOV R1,R1,ASR#13:MOV R1,R1,LSL#16:MOVNE R1,#&C0000000:STR R1,[R2,R0,LSR#14]„ADDS R0,R0,#&10000 BNE L:MOVS PC,R14ª.mandelbrot´\do pass1¾MOV table,#T%È .rowloopÒMOV X,oldXÜMOV pixcnt,#80:.dopixelæMOV R,X:MOV I,Yð]:ãI%=1 ¸ max:òiter(I%):íúãI%=1 ¸ max:òexit(I%):í
  3. [OPT P .donerow$ADD Y,Y,XST,ASL#2:ADD SC,SC,#960"CMP SC,SCEND:BMI rowloop,MOVS PC,R146
  4. .pass2@$ADD Y,Y,XST,ASL#1:ADD SC,SC,#640JMOV table,#T%T.rowloop2^MOV X,oldXhMOV pixcnt,#160:.dopixel2r%LDRB I,[SC]:TST I,#128:BNE skipit|1LDRB R,[SC,#-640]:€ R,R,#127:CMP R,I:BNE doitŷ0LDRB R,[SC,#640]:€ R,R,#127:CMP R,I:BNE doit‘/LDRB R,[SC,#-2]:€ R,R,#127:CMP R,I:BNE doitŒ0LDRB R,[SC,#2]:€ R,R,#127:CMP R,I:BEQ skipit¤    .doit®MOV R,X:MOV I,Y¸]:ãI%=1 ¸ max:òiter2(I%):íÂãI%=1 ¸ max:òexit2(I%):íÌ
  5. [OPT PÖ .skipitàEADD SC,SC,#2:ADD X,X,XST,ASL#1:SUBS pixcnt,pixcnt,#1:BNE dopixel2ê.donerow2ô$ADD Y,Y,XST,ASL#1:ADD SC,SC,#320þCMP SC,SCEND:BMI rowloop2MOVS PC,R14
  6. .pass3ADD Y,Y,XST:ADD SC,SC,#320&MOV table,#T%0.rowloop3:MOV X,oldXDMOV pixcnt,#320:.dopixel3N&LDRB I,[SC]:TST I,#128:BNE skipit2X2LDRB R,[SC,#-320]:€ R,R,#127:CMP R,I:BNE doit2b1LDRB R,[SC,#320]:€ R,R,#127:CMP R,I:BNE doit2l0LDRB R,[SC,#-1]:€ R,R,#127:CMP R,I:BNE doit2v1LDRB R,[SC,#1]:€ R,R,#127:CMP R,I:BEQ skipit2€
  7. .doit2⇩MOV R,X:MOV I,Y“]:ãI%=1 ¸ max:òiter3(I%):ífiãI%=1 ¸ max:òexit3(I%):í¨
  8. [OPT P² .skipit2¼?ADD SC,SC,#1:ADD X,X,XST:SUBS pixcnt,pixcnt,#1:BNE dopixel3Æ.donerow3ÐADD Y,Y,XSTÚCMP SC,SCEND:BMI rowloop3äMOVS PC,R14î .clearupø4MOV 10,#127:☓R 10,10,10,ASL#8:☓R 10,10,10,ASL#16.clearloop 8LDMIA (SC),{1-4}:€ 1,1,10:€ 2,2,10:€ 3,3,10:€ 4,4,100STMIA (SC)!,{1-4}:CMP SC,SCEND:BMI clearloop MOV PC,R14*.temp2 EQUD 04.scrollup>STR oldX,temp2:MOV 1,SCENDHADD SC2,SC,#320:.L9R*LDMIA (SC2)!,{4-11}:STMIA (SC)!,{4-11}\*LDMIA (SC2)!,{4-11}:STMIA (SC)!,{4-11}f*LDMIA (SC2)!,{4-11}:STMIA (SC)!,{4-11}p*LDMIA (SC2)!,{4-11}:STMIA (SC)!,{4-11}z*LDMIA (SC2)!,{4-11}:STMIA (SC)!,{4-11}☓*LDMIA (SC2)!,{4-11}:STMIA (SC)!,{4-11}‰*LDMIA (SC2)!,{4-11}:STMIA (SC)!,{4-11}—*LDMIA (SC2)!,{4-11}:STMIA (SC)!,{4-11}¢*LDMIA (SC2)!,{4-11}:STMIA (SC)!,{4-11}¬*LDMIA (SC2)!,{4-11}:STMIA (SC)!,{4-11}¶CMP SC2,1:BMI L9ÀLDR X,temp2ÊMOV table,#T%Ô%ADD Y,Y,XST,ASL#8:MOV pixcnt,#320Þ.dopixelbottomèQMOV R,X:MOV I,Y:]:ãI%=1 ¸ max:òiterbottom(I%):í:ãI%=1 ¸ max:òexitbottom(I%):íò
  9. [OPT Pü.donerowbottom MOVS PC,R14    .temp3 EQUD 0    .scrolldown    STR oldX,temp3:MOV 1,SC    $ADD SC,SC,#81920    .SUB SC2,SC,#320:.L10    8*LDMDB (SC2)!,{4-11}:STMDB (SC)!,{4-11}    B*LDMDB (SC2)!,{4-11}:STMDB (SC)!,{4-11}    L*LDMDB (SC2)!,{4-11}:STMDB (SC)!,{4-11}    V*LDMDB (SC2)!,{4-11}:STMDB (SC)!,{4-11}    `*LDMDB (SC2)!,{4-11}:STMDB (SC)!,{4-11}    j*LDMDB (SC2)!,{4-11}:STMDB (SC)!,{4-11}    t*LDMDB (SC2)!,{4-11}:STMDB (SC)!,{4-11}    ~*LDMDB (SC2)!,{4-11}:STMDB (SC)!,{4-11}    ⇦*LDMDB (SC2)!,{4-11}:STMDB (SC)!,{4-11}    ‹*LDMDB (SC2)!,{4-11}:STMDB (SC)!,{4-11}    †CMP SC2,1:BNE L10    ¦SUB SC,SC,#320    °LDR X,temp3    ºMOV table,#T%    ÄSUB Y,Y,XST:MOV pixcnt,#320    Î.dopixeltop    ØKMOV R,X:MOV I,Y:]:ãI%=1 ¸ max:òitertop(I%):í:ãI%=1 ¸ max:òexittop(I%):í    â
  10. [OPT P    ì.donerowtop MOVS PC,R14    ö.temp4 EQUD 0
  11. .scrollleft
  12.  
  13. STR oldX,temp4:MOV 1,SCEND
  14. .L11
  15. LDMIA (SC),{4-12}
  16. (]:ãI%=4 ¸ 11
  17. 2
  18. [OPT P
  19. <*MOV I%,I%,ASR#8:☓R I%,I%,(I%+1),ASL#24
  20. F]:íI%:[OPT P
  21. PSTMIA (SC)!,{4-11}
  22. ZCMP SC,1:BNE L11
  23. dQSUBS SC,SC,#81920:ADD SC,SC,#320:SUB SC,SC,#1:\set SC to top right hand pixel
  24. nLDR X,temp4
  25. xMADD X,X,XST,ASL#8:ADD X,X,XST,ASL#6:\set X to thing for right hand column
  26. ŵMOV table,#T%
  27. …MOV pixcnt,#256
  28. „.dopixelright
  29.  OMOV R,X:MOV I,Y:]:ãI%=1 ¸ max:òiterright(I%):í:ãI%=1 ¸ max:òexitright(I%):í
  30. ª
  31. [OPT P
  32. ´.donecolright MOVS PC,R14
  33. ¾.temp5 EQUD 0
  34. È.scrollright
  35. ÒSTR oldX,temp5:ADD 1,SC,#32
  36. ÜMOV SC,SCEND
  37. æ.L12
  38. ðLDMDB (SC),{4-12}
  39. ú]:ãI%=12 ¸ 5 ⇦ -1 
  40. [OPT P *MOV I%,I%,ASL#8:☓R I%,I%,(I%-1),ASR#24 ]:íI%:[OPT P "STMDB (SC)!,{5-12} ,CMP SC,1:BNE L12 6;\special case, as can't allow a read to 'screenstart'-4 @LDMDB (SC),{5-12} J]:ãI%=12 ¸ 5 ⇦ -1 T
  41. [OPT P ^*MOV I%,I%,ASL#8:☓R I%,I%,(I%-1),ASR#24 h]:íI%:[OPT P rSTMDB (SC)!,{5-12} |LDR X,temp5 ŷMOV table,#T% ‘MOV pixcnt,#256 Œ.dopixelleft ¤MMOV R,X:MOV I,Y:]:ãI%=1 ¸ max:òiterleft(I%):í:ãI%=1 ¸ max:òexitleft(I%):í ®
  42. [OPT P ¸.donecolleft MOVS PC,R14 ÂMOV PC,R14 Ì]:í ÖÖinitialise àA%=¤screenstart êX=-2:Y=-1.5:S=3/256 ô3B%=(X*8192)<<16:C%=(Y*8192)<<16:D%=(S*8192)<<16 þF%=A%+81920 Ñ=0 Ñ=0:Ömandelbrot:T%=’ &AÖpass2:K%=’:Öpass2:U%=’:Öpass3:L%=’:Öpass3:V%=’:Öclearup:W%=’ 0A=¥ :çA=56 Öscrollup:C%+=D% DçA=50 Öscrolldown:C%-=D% NçA=52 Öscrollleft:B%+=D% XçA=54 Öscrollright:B%-=D% b'çA=49 S=S/1.3:D%=(S*8192)<<16:å™T\L l'çA=57 S=S*1.3:D%=(S*8192)<<16:å™T\L v    å™TpL €à øÝòiterbottom(I%)
  43. [OPT P 1LDR A,[table,R,LSR#14]:LDR B,[table,I,LSR#14]ADDS temp,A,B )BCS exitbottom(I%):BMI exitbottom(I%)*;ADD I,R,I:LDR I,[table,I,LSR#14]:SUB I,I,temp:ADD I,I,Y4SUB R,A,B:ADD R,R,X>]:áHÝòexitbottom(I%)R
  44. [OPT P\Ŵ.exitbottom(I%):MOV A,#(-I%*(I%<>max)):STRB A,[SC],#1:ADD X,X,XST:SUBS pixcnt,pixcnt,#1:BNE dopixelbottom:B donerowbottom:]:áfÝòitertop(I%)p
  45. [OPT Pz1LDR A,[table,R,LSR#14]:LDR B,[table,I,LSR#14]☓ADDS temp,A,B‰#BCS exittop(I%):BMI exittop(I%)—;ADD I,R,I:LDR I,[table,I,LSR#14]:SUB I,I,temp:ADD I,I,Y¢SUB R,A,B:ADD R,R,X¬]:á¶Ýòexittop(I%)À
  46. [OPT PÊx.exittop(I%):MOV A,#(-I%*(I%<>max)):STRB A,[SC],#1:ADD X,X,XST:SUBS pixcnt,pixcnt,#1:BNE dopixeltop:B donerowtop:]:áÔÝòiterright(I%)Þ
  47. [OPT Pè1LDR A,[table,R,LSR#14]:LDR B,[table,I,LSR#14]òADDS temp,A,Bü'BCS exitright(I%):BMI exitright(I%);ADD I,R,I:LDR I,[table,I,LSR#14]:SUB I,I,temp:ADD I,I,YSUB R,A,B:ADD R,R,X]:á$Ýòexitright(I%).
  48. [OPT P8€.exitright(I%):MOV A,#(-I%*(I%<>max)):STRB A,[SC],#320:ADD Y,Y,XST:SUBS pixcnt,pixcnt,#1:BNE dopixelright:B donecolright:]:áBÝòiterleft(I%)L
  49. [OPT PV1LDR A,[table,R,LSR#14]:LDR B,[table,I,LSR#14]`ADDS temp,A,Bj%BCS exitleft(I%):BMI exitleft(I%)t;ADD I,R,I:LDR I,[table,I,LSR#14]:SUB I,I,temp:ADD I,I,Y~SUB R,A,B:ADD R,R,X⇦]:á‹Ýòexitleft(I%)†
  50. [OPT P¦}.exitleft(I%):MOV A,#(-I%*(I%<>max)):STRB A,[SC],#320:ADD Y,Y,XST:SUBS pixcnt,pixcnt,#1:BNE dopixelleft:B donecolleft:]:á°ºÝòiter2(I%)Ä
  51. [OPT PÎ1LDR A,[table,R,LSR#14]:LDR B,[table,I,LSR#14]ØADDS temp,A,BâBCS exit2(I%):BMI exit2(I%)ì;ADD I,R,I:LDR I,[table,I,LSR#14]:SUB I,I,temp:ADD I,I,YöSUB R,A,B:ADD R,R,X]:á
  52. Ýòexit2(I%)
  53. [OPT P¹.exit2(I%):MOV A,#(-I%*(I%<>max))€127:STRB A,[SC,#320]:STRB A,[SC,#321]:STRB A,[SC,#1]:☓R A,A,#128:STRB A,[SC],#2:ADD X,X,XST,ASL#1:SUBS pixcnt,pixcnt,#1:BNE dopixel2:B donerow2:]:á(Ýòiter3(I%)2
  54. [OPT P<1LDR A,[table,R,LSR#14]:LDR B,[table,I,LSR#14]FADDS temp,A,BPBCS exit3(I%):BMI exit3(I%)Z;ADD I,R,I:LDR I,[table,I,LSR#14]:SUB I,I,temp:ADD I,I,YdSUB R,A,B:ADD R,R,Xn]:áxÝòexit3(I%)ŵ
  55. [OPT P…|.exit3(I%):MOV A,#((-I%*(I%<>max))€127)+128:STRB A,[SC],#1:ADD X,X,XST:SUBS pixcnt,pixcnt,#1:BNE dopixel3:B donerow3:]:á¦Ýòiter(I%)°
  56. [OPT Pº1LDR A,[table,R,LSR#14]:LDR B,[table,I,LSR#14]ÄADDS temp,A,BÎBCS exit(I%):BMI exit(I%)Ø;ADD I,R,I:LDR I,[table,I,LSR#14]:SUB I,I,temp:ADD I,I,YâSUB R,A,B:ADD R,R,Xì]:áöÝòexit(I%)
  57. [OPT P
  58. Ç.exit(I%):MOV A,#(-I%*(I%<>max))€127:☓R A,A,A,LSL#8:☓R A,A,A,LSL#16:STR A,[SC,#320]:STR A,[SC,#640]:STR A,[SC,#960]:STR A,[SC],#4:ADD X,X,XST,ASL#2:SUBS pixcnt,pixcnt,#1:BNE dopixel:B donerow:]:áô:þݤscreenstartÞ screen% 8!screen%=148screen%!4=-1&+È−"OS_ReadVduVariables",screen%,screen%0=!screen%ÿ